package com.faya.green.model;

import cn.hutool.cache.CacheUtil;
import cn.hutool.cache.impl.TimedCache;

/**
 * 用户 ：LX
 * 创建时间： 2018/7/15. 19:05
 * 地点：广州
 * 目的: 使用HuTool 工具中的 TimedCache 来管理缓存，替代redis的部分功能
 *      主要是为了解决token在项目中不会自动过期，设置了session过期时间会导致全局的session全部过期的问题
 *      注意，这个缓存对象会在全局生效，也就是说，不同用户，不同进程都可以访问到，所以在设置token的时候需要设置为唯一的
 *
 *       2018年11月9日10:45:31 ：注意使用这个方法，需要
 *       //取消定时清理
 *       timedCache.cancelPruneSchedule();
 *       不然线程越来越多，会导致大问题，暂时不考虑该方案
 */
public class CacheProcessor {

    private static CacheProcessor cacheProcessor = null;

    private static TimedCache<String, String> timedCache = null;

    private CacheProcessor(){

    }

    private static CacheProcessor getCacheProcessor(){
        if (cacheProcessor == null){
            cacheProcessor = new CacheProcessor();
            /**
             * 默认存放在缓存中的过期时间为10分钟
             */
            timedCache = CacheUtil.newTimedCache(10 * 1000 * 60);
        }
        return cacheProcessor;
    }

    /**
     * 一个单例的 TimedCache 来保证唯一的实例
     * @return
     */
    public static TimedCache<String, String> getTimedCache(){
        //保证一定是实例化的 cacheProcessor
        CacheProcessor cacheProcessor = getCacheProcessor();
        return timedCache;
    }

}
